import greenfoot.*; 
/**
 * @autor (Juarez Soto Luis Angel y Rangel Ramirez Juan Carlos) 
 * @versión (20/nov/2014)
 */
public class Nino extends Personaje
{
    private int velocidad; /*Velocidad del personaje Nino*/
    private int vida; /*Cantidad de vidas del personaje Nino*/
    private int contImage;
    private GreenfootImage[] arrImages;
    private String image;
    private SimpleTimer reloj;
    private int tiempoCorriendo;
    private MundoSano miMundo;
    /**El constructor de Nino asigna una velocidad de
     * 3 que hereda de la superclase Personaje, ademas de que se 
     * agrego un arreglo de imagenes para aparentar de que el personaje
     * esta caminando
     */

    public Nino()
    {
        super(3);
        arrImages = new GreenfootImage [8];
        for(int i=0; i<=7; i++)
        {
            image="boy_run"+(i+1)+".png";
            arrImages[i]=new GreenfootImage(image);
        }
        contImage=0;
        reloj=new SimpleTimer();
        reloj.mark();
        tiempoCorriendo=500;
    }
    
    /**Realiza varias actividades como checar cuales objetos son los que
     * a tocado el peronaje Nino y deacuerdo a cada validacion
     * realiza diferentes acciones
     */

    public void act() 
    {
        miMundo=(MundoSano)getWorld();
        if(tomoCerveza()==true){
            invertirDireccion();
        }
        else{
            super.correr();
            super.mover();
            if(reloj.millisElapsed()>=tiempoCorriendo)
            {
                reloj.mark();
                simulaCorrer();
            }
            tiempoCorriendo=1000-miMundo.getSalud()*10;
        } 
        super.act();
        
     }
    
    /**Verifica si es que el personaje tomo la Cerveza si es verdad
     * regresa un boolean true de lo contrario regresa un boolean 
     * false
     */ 
    public boolean tomoCerveza()
    {
         if(isTouching(Cerveza.class))
            return true;
         else 
            return false;
    }
    
     
    /**Metodo que es necesario para inverrir las direcciones del personaje 
     * depensiendo si es que tomo el objeto Cerveza
     */
    public void invertirDireccion()
    {
        int y = getY();
        if(Greenfoot.isKeyDown("right"))
            move(-3);
        if(Greenfoot.isKeyDown("left"))
            move(3);
        if(Greenfoot.isKeyDown("up"))
        {
            y = y + 3;
            setLocation(getX(),y);
        }
        if(Greenfoot.isKeyDown("down"))
        {
            y = y - 3;
            setLocation(getX(),y);  
        }
    }
    /**Metodo que simula el movimiento del jugador
     * las imagenes estan guardadas en un arreglo de imagenes
     */
    public void simulaCorrer()
    {
        this.setImage(arrImages[contImage]);
        if(contImage<7)
            contImage++;
        else
            contImage=0;
    }
}
